﻿using System;
using System.Data;

namespace Fingerbrisk.DataSource.FluentDatasourceInteract
{
    public interface IQueryExpression
    {
        ITransaction Transaction { get; }

        IQueryExpression Select(String selectClause);

        IQueryExpression Select(String selectClause, int startIdx);

        IQueryExpression Select(String selectClause, int startIdx, int endIdx);

        IQueryExpression From(String dataObject);

        IQueryExpression Insert(String insertClause);

        IQueryExpression And(String andClause);

        IQueryExpression Where(String whereClause);

        IQueryExpression OrderBy(String orderClause);

        IQueryExpression GroupBy(String orderClause);

        IQueryExpression As(String alias);

        T ExecuteAs<T>(params QueryArg[] args);

        DataSet Execute(params QueryArg[] args);
    }
}